/*                          UX-Framework                               
 *                                                                 
 *  iZE Co.,Ltd. Copyright 2009 All rights reserved.          
 *  This file is distributed under the terms of the GNU Lesser 
 *  General Public License, described in file LICENSE.                                     
 */
package jp.ize.ux.states;

// {{{ imports
import jp.ize.ux.UXObject;
import jp.ize.ux.geom.UXPoint;
import jp.ize.ux.states.UXBasicState;
// }}}
// {{{ enum UXRingDir
/**
 * 円上の方向を表現します。
 */
enum UXRingDir
{
	/** 時計回り */
	CLOCKWISE;
	/** 反時計回り */
	UNTI_CLOCKWISE;  
}
// }}}
// {{{ enum UXRingExtent
/**
 * オブジェクトの広げ方です。
 */
enum UXRingExtent
{
	/**
	 * オブジェクトは重ならない程度に詰めて配置されます。
	 * 配置初期位置(0-360の角度)と方向を指定できます。
	 */
	CLOSER( start : Float, d : UXRingDir);
	/** オブジェクトは円上に均等に配置されます。*/
	EQUALLY;  
}
// }}}
// {{{ enum UXRingAlign
/**
 * オブジェクトのどの位置をを円上に乗せるかを指定する値です。
 */
enum UXRingAlign
{
	/** 矩形上部の中心 */
	TOPCENTER;
	/** 矩形中心 */
	CENTER;    
}
// }}}
// {{{ class UXRingState extends UXListState
/**
 * UXRingStateクラス.<br>
 * 円の中心と半径を持ちます。<br>
 *
 * @author		iZE Co., Ltd.<br>
 * @version		$Id$<br>
 */
class UXRingState extends UXListState
{
	// {{{ public var center(default, default) : UXPoint;
	/**
	 * 円の中心座標です。
	 */
	public var center(default, default) : UXPoint;
	// }}}
	// {{{ public var radius(default, default) : Float
	/**
	 * 円の半径です。
	 */
	public var radius(default, default) : Float;
	// }}}
	// {{{ public var align(default, default) : UXRingAlign
	/**
	 * オブジェクトのどの位置を円上に乗せるかを指定できます。デフォルトはCENTERです。
	 */
	public var align(default, default) : UXRingAlign;
	// }}}
	// {{{ public var extent(default, default) : UXRingExtent
	/**
	 * オブジェクトの広げ方を指定できます。デフォルトはEQUALLYです。
	 */
	public var extent(default, default) : UXRingExtent;
	// }}}
	// {{{ public var theta(default, default) : Float;
	/**
	 * 回転角度を指定します。単位はradianで、初期値は0.0[rad]です。
	 * 円弧の終了角度です。水平右方向を角度0として0から360までの値を設定できます。
	 */
	public var theta(default, default) : Float;
	// }}}
	// {{{ public function new()
	/**
	 * コンストラクタです。
	 * @param c : UXPoint 中心座標を設定します。
	 * @param r : Float 半径を設定します。
	 */
	public function new( ?c : UXPoint, ?r : Float = 0 )
	{
		super();
		if (c == null) c = new UXPoint(0,0);
		this.center = c;
		this.radius = r;
		this.theta = 0.0;
	}
	// }}}
}
// }}}
